import { reqGetSearchInfo } from '@/api';

// search模块的小仓库
const state = {
	// 仓库初始状态
	searchList: {},
};
const mutations = {
	GETSEARCHLIST(state, searchList) {
		state.searchList = searchList;
	},
};
const actions = {
	// 获取 search模块数据
	async getSearchList({ commit }, params = {}) {
		//当前这个 reqGetSearchInfo 这个函数在调用获取服务器数据的时候, 至少传递一个参数 (空对象)
		// params形参: 是当用户派发 actions 的时候, 第二个参数传递过来的, 至少是一个空对象
		let result = await reqGetSearchInfo(params);
		if (result.code == 200) {
			commit('GETSEARCHLIST', result.data);
		}
	},
};
// 计算属性
//在项目当中, getters 主要的作用是为了简化仓库中的数据(简化数据而生)
// 可以把我们将来在组件当中需要用的数据, 简化一下
// 将来组件在获取数据的时候, 就方便了
const getters = {
	// 当前形参 state , 当前仓库中的 state, 不是大仓库中的 state
	goodsList(state) {
		// 这样书写是有问题的, 如果没有网络, 返回的是 undefined
		//计算新的属性的属性值, 至少要给一个数组
		return state.searchList.goodsList;
	},
	trademarkList(state) {
		return state.searchList.trademarkList;
	},
	attrsList(state) {
		return state.searchList.attrsList;
	},
};

// home模块的小仓库
export default {
	//state: 仓库储存数据的地方
	state,
	// mutations: 修改state的唯一手段
	mutations,
	// actions: 处理 actions, 可以书写自己的业务逻辑, 也可以处理异步
	actions,
	// getters: 理解为计算属性, 用于简化仓库数据, 让组件获取仓库的数据更加方便
	getters,
};
